namespace Maple.Branch.Identity.Consts
{
    public static class IdentitySettingNames
    {
        private const string Prefix = IdentityModuleConsts.ProjectName + ".Setting";

        public static class Password
        {
            private const string PasswordPrefix = Prefix + ".Password";

            /// <summary>
            /// Default: 6
            /// </summary>
            public const string RequiredLength = PasswordPrefix + ".RequiredLength";

            /// <summary>
            /// Default: 1
            /// </summary>
            public const string RequiredUniqueChars = PasswordPrefix + ".RequiredUniqueChars";

            /// <summary>
            /// Default: true
            /// </summary>
            public const string RequireNonAlphanumeric = PasswordPrefix + ".RequireNonAlphanumeric";

            /// <summary>
            /// Default: true
            /// </summary>
            public const string RequireLowercase = PasswordPrefix + ".RequireLowercase";

            /// <summary>
            /// Default: true
            /// </summary>
            public const string RequireUppercase = PasswordPrefix + ".RequireUppercase";

            /// <summary>
            /// Default: true
            /// </summary>
            public const string RequireDigit = PasswordPrefix + ".RequireDigit";
        }

        public static class Lockout
        {
            private const string LockoutPrefix = Prefix + ".Lockout";

            /// <summary>
            /// Default: true
            /// </summary>
            public const string AllowedForNewUsers = LockoutPrefix + ".AllowedForNewUsers";

            /// <summary>
            /// Default: 5 * 60 (s)
            /// </summary>
            public const string LockoutDuration = LockoutPrefix + ".LockoutDuration";

            /// <summary>
            /// Default: 5 (times)
            /// </summary>
            public const string MaxFailedAccessAttempts = LockoutPrefix + ".MaxFailedAccessAttempts";
        }

        public static class SignIn
        {
            private const string SignInPrefix = Prefix + ".SignIn";

            /// <summary>
            /// Default: false
            /// </summary>
            public const string RequireConfirmedEmail = SignInPrefix + ".RequireConfirmedEmail";
        }

        public static class User
        {
            private const string UserPrefix = Prefix + ".User";

            /// <summary>
            /// Default: true
            /// </summary>
            public const string IsUserNameUpdateEnabled = UserPrefix + ".IsUserNameUpdateEnabled";

            /// <summary>
            /// Default: true
            /// </summary>
            public const string IsEmailUpdateEnabled = UserPrefix + ".IsEmailUpdateEnabled";
        }
    }
}
